/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * verResultadosRadiografia.java
 *
 * Created on 04-jun-2011, 17:38:46
 */

package interfaces;

import GestorPruebas.*;
import GestorUsuarios.IDException;
import GestorUsuarios.Usuario;
import paciente.*;
//import java.awt.Graphics;
import java.awt.Image;
//import java.awt.image.BufferedImage;
import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.security.NoSuchAlgorithmException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import org.jdesktop.application.Action;
import javax.swing.ImageIcon;
import javax.swing.JFileChooser;

/**
 *
 * @author antonio
 */
public class verResultadosRadiografia extends javax.swing.JPanel {

    PacienteView app ;
    Interfaces  _anterior;
    ArrayList<Imagen> _imagenes = null;
    Integer _posicion;
    /** Creates new form verResultadosRadiografia */
    public verResultadosRadiografia( PacienteView a) {
        initComponents();
        app = a;
    }


    public void rellenaDatos ( Prueba p , Interfaces ant ) throws SQLException, IOException, ClassNotFoundException, NoSuchAlgorithmException {
        _anterior = ant;
        if ( p != null ) {
            String directorio = System.getProperty("user.dir");
            String sitio = "/temp/";
            Integer id = 1;

            try {
                //Obtenemos la imagen
                 _imagenes = Imagen.get(p.getIdPrueba(), directorio + sitio);
            } catch (IDException ex) {
                Logger.getLogger(verResultadosRadiografia.class.getName()).log(Level.SEVERE, null, ex);
            }

            if ( _imagenes != null ) {
            //Obtenemos el usuario de la prueba
            Usuario u = Usuario.get(p.getIdPaciente());
            paciente.setText(u.getNombre() + " " + u.getApellidos());

            if( ((Radiografia)p).getTipoRadiografia() == TipoRadiografia.A ) {
                nombre_prueba.setText("Radiografía de abdomen");
            }
            else if( ((Radiografia)p).getTipoRadiografia() == TipoRadiografia.CL ) {
                nombre_prueba.setText("Radiografía de columna");
            }
            else if( ((Radiografia)p).getTipoRadiografia() == TipoRadiografia.CR ) {
                nombre_prueba.setText("Radiografía de cráneo");
            }
            else if( ((Radiografia)p).getTipoRadiografia() == TipoRadiografia.H ) {
                nombre_prueba.setText("Radiografía de hombro");
            }
            else if( ((Radiografia)p).getTipoRadiografia() == TipoRadiografia.ID ) {
                nombre_prueba.setText("Radiografía de extremidad inferior derecha");
            }
            else if( ((Radiografia)p).getTipoRadiografia() == TipoRadiografia.II ) {
                nombre_prueba.setText("Radiografía de extremidad inferior izquierda");
            }
            else if( ((Radiografia)p).getTipoRadiografia() == TipoRadiografia.SD ) {
                nombre_prueba.setText("Radiografía de extremidad superior derecha");
            }
            else if( ((Radiografia)p).getTipoRadiografia() == TipoRadiografia.SI ) {
                nombre_prueba.setText("Radiografía de extremidad superior izquierda");
            }
            else if( ((Radiografia)p).getTipoRadiografia() == TipoRadiografia.T ) {
                nombre_prueba.setText("Radiografía de torax");
            }
            else if( ((Radiografia)p).getTipoRadiografia() == TipoRadiografia.TC ) {
                nombre_prueba.setText("Radiografía telemática de columna");
            }
            else if( ((Radiografia)p).getTipoRadiografia() == TipoRadiografia.TM ) {
                nombre_prueba.setText("Radiografía telemática MII");
            }

            _posicion = 0;
           //Cargamos la imagen
           ImageIcon img = new ImageIcon(_imagenes.get(_posicion).getUbicacion()+_imagenes.get(_posicion).getNombre());
           Image escalado = img.getImage().getScaledInstance(imagen.getWidth(), imagen.getHeight(), Image.SCALE_DEFAULT);
           imagen.setIcon(new ImageIcon(escalado));

           imagen.setEnabled(true);

           //Activamos o desactivamos los botones
           btn_anterior.setEnabled(false);
           if ( _imagenes.size() > 1 )
               btn_siguiente.setEnabled(true);
           else
               btn_siguiente.setEnabled(false);

           }else {
                btn_siguiente.setEnabled(false);
                btn_anterior.setEnabled(false);
           }

        }
    }
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        imagen = new javax.swing.JLabel();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        paciente = new javax.swing.JLabel();
        nombre_prueba = new javax.swing.JLabel();
        btn_anterior = new javax.swing.JButton();
        btn_siguiente = new javax.swing.JButton();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();

        setMinimumSize(new java.awt.Dimension(780, 472));

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Resultados obtenidos", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, Interfaz.setFontSize()));
        jPanel1.setName("jPanel1"); // NOI18N

        imagen.setName("imagen"); // NOI18N

        jLabel1.setFont(Interfaz.setBoldFontSize());
        jLabel1.setText("Paciente:");
        jLabel1.setName("jLabel1"); // NOI18N

        jLabel2.setFont(Interfaz.setBoldFontSize());
        jLabel2.setText("Prueba realizada");
        jLabel2.setName("jLabel2"); // NOI18N

        paciente.setFont(Interfaz.setFontSize());
        paciente.setName("paciente"); // NOI18N

        nombre_prueba.setFont(Interfaz.setFontSize());
        nombre_prueba.setName("nombre_prueba"); // NOI18N

        javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(paciente.PacienteApp.class).getContext().getActionMap(verResultadosRadiografia.class, this);
        btn_anterior.setAction(actionMap.get("anterior")); // NOI18N
        org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(paciente.PacienteApp.class).getContext().getResourceMap(verResultadosRadiografia.class);
        btn_anterior.setIcon(resourceMap.getIcon("btn_anterior.icon")); // NOI18N
        btn_anterior.setText("");
        btn_anterior.setName("btn_anterior"); // NOI18N

        btn_siguiente.setAction(actionMap.get("siguiente")); // NOI18N
        btn_siguiente.setIcon(resourceMap.getIcon("btn_siguiente.icon")); // NOI18N
        btn_siguiente.setText("");
        btn_siguiente.setName("btn_siguiente"); // NOI18N

        org.jdesktop.layout.GroupLayout jPanel1Layout = new org.jdesktop.layout.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(jPanel1Layout.createSequentialGroup()
                        .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                            .add(nombre_prueba, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 345, Short.MAX_VALUE)
                            .add(jLabel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 345, Short.MAX_VALUE)
                            .add(jLabel2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 345, Short.MAX_VALUE)
                            .add(paciente, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 345, Short.MAX_VALUE))
                        .add(18, 18, 18)
                        .add(imagen, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 395, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                        .addContainerGap())
                    .add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel1Layout.createSequentialGroup()
                        .add(btn_anterior)
                        .add(26, 26, 26)
                        .add(btn_siguiente)
                        .add(128, 128, 128))))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(jPanel1Layout.createSequentialGroup()
                .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(jPanel1Layout.createSequentialGroup()
                        .addContainerGap()
                        .add(jLabel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 37, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                        .add(paciente, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 35, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                        .add(48, 48, 48)
                        .add(jLabel2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 37, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                        .add(nombre_prueba, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 33, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                    .add(imagen, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 244, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
                .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(btn_anterior, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 61, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                    .add(btn_siguiente, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 61, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                .add(17, 17, 17))
        );

        jButton1.setAction(actionMap.get("aceptar")); // NOI18N
        jButton1.setIcon(resourceMap.getIcon("jButton1.icon")); // NOI18N
        jButton1.setText("");
        jButton1.setName("jButton1"); // NOI18N

        jButton2.setAction(actionMap.get("salvar")); // NOI18N
        jButton2.setIcon(resourceMap.getIcon("jButton2.icon")); // NOI18N
        jButton2.setText("");
        jButton2.setName("jButton2"); // NOI18N

        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
                .add(20, 20, 20)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
                    .add(org.jdesktop.layout.GroupLayout.LEADING, jPanel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .add(layout.createSequentialGroup()
                        .add(jButton2)
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 650, Short.MAX_VALUE)
                        .add(jButton1)))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .add(jPanel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 368, Short.MAX_VALUE)
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(jButton1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 81, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                    .add(jButton2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 84, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );
    }// </editor-fold>//GEN-END:initComponents

    @Action
    public void aceptar() {
        for ( Imagen img : _imagenes) {
            File fichero = new File(img.getUbicacion()+img.getNombre());
            fichero.delete();
        }
        app.volver(_anterior);
    }

    @Action
    public void salvar() throws NoSuchAlgorithmException, SQLException, IOException, ClassNotFoundException, IDException {
        File directorio = null;
        String rutaAbsoluta;
        JFileChooser fileChooser = new JFileChooser();
        fileChooser.setMultiSelectionEnabled(false); 
        fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        fileChooser.setDialogTitle("Seleccionar directorio de descarga");
        Boolean error = false;
        int status = fileChooser.showSaveDialog(null);// Da un entero

        app.limpiaErrores();

        // Si apretamos en aceptar ocurrirá esto
        if (status == JFileChooser.APPROVE_OPTION) {
            directorio = fileChooser.getCurrentDirectory();// .getSelectedFile();
            rutaAbsoluta = directorio.getAbsolutePath();
            rutaAbsoluta += "/";

            error = save ( _imagenes.get(_posicion).getUbicacion()+_imagenes.get(_posicion).getNombre(),rutaAbsoluta+_imagenes.get(_posicion).getNombre());
            if (error ) {
               app.addError("No se ha podido guardar la imagen");
               error = true;
            }

            if (!error ) {
                app.abrirMensajeExito("Imagen guardada con exito", Interfaces.VER_RESULTADOS_RADIOGRAFIA);
            }else {
                app.muestraListaErrores();
            }
                
        }
    }


    Boolean save ( String imagen , String destino ) throws FileNotFoundException {
        Boolean error = false;
        // Guardar img:
        try {
            File f = new File(destino);
            BufferedImage img = ImageIO.read(new File(imagen));
            if ( img != null && f != null )
                ImageIO.write(img,"png", f);
            else
                error = true;
        } catch (Exception e) {
            System.out.println("Error de escritura");
            error = true;
        }

        return error;
    }

    @Action
    public void siguiente() {
        //Ponemos la imagen
        _posicion++;
        ImageIcon img = new ImageIcon(_imagenes.get(_posicion).getUbicacion()+_imagenes.get(_posicion).getNombre());
        Image escalado = img.getImage().getScaledInstance(imagen.getWidth(), imagen.getHeight(), Image.SCALE_DEFAULT);
        imagen.setIcon(new ImageIcon(escalado));
        imagen.setEnabled(true);

        //Vemos los botones
        if ( _posicion == (_imagenes.size()-1) ) {
            btn_siguiente.setEnabled(false);
        }else
            btn_siguiente.setEnabled(true);


        btn_anterior.setEnabled(true);
        
    }

    @Action
    public void anterior() {
        //Ponemos la imagen
        _posicion--;
        ImageIcon img = new ImageIcon(_imagenes.get(_posicion).getUbicacion()+_imagenes.get(_posicion).getNombre());
        Image escalado = img.getImage().getScaledInstance(imagen.getWidth(), imagen.getHeight(), Image.SCALE_DEFAULT);
        imagen.setIcon(new ImageIcon(escalado));
        imagen.setEnabled(true);

        //Vemos los botones
        if ( _posicion == 0 ) {
            btn_anterior.setEnabled(false);
        }else
            btn_anterior.setEnabled(true);


        btn_siguiente.setEnabled(true);
    }
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btn_anterior;
    private javax.swing.JButton btn_siguiente;
    private javax.swing.JLabel imagen;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JLabel nombre_prueba;
    private javax.swing.JLabel paciente;
    // End of variables declaration//GEN-END:variables

}
